package newtime

import (
    "strconv"
    "strings"
    "time"
)

// NewTime time.Time 扩展
type NewTime struct {
    now time.Time
}

// Now 当前时间
func Now() NewTime {
    return NewTime{time.Now()}
}

// Year 获取当前时间年
func (t NewTime) Year() string {
    n := t.now
    return toStr(n.Year())
}

// Month 获取当前时间月
func (t NewTime) Month() string {
    n := t.now
    return toStr(int(n.Month()))
}

// Day 获取当前时间天
func (t NewTime) Day() string {
    n := t.now
    return toStr(n.Day())
}

// Hour 获取当前时间小时
func (t NewTime) Hour() string {
    n := t.now
    return toStr(n.Hour())
}

// Minute 获取当前时间分钟
func (t NewTime) Minute() string {
    n := t.now
    return toStr(n.Minute())
}

// Sencod 获取当前时间秒
func (t NewTime) Sencod() string {
    n := t.now
    return toStr(n.Second())
}

// NewFormat 格式化当前时间
func (t NewTime) NewFormat(format string) string {
    format = strings.Replace(format, "Y", t.Year(), -1)
    format = strings.Replace(format, "m", t.Month(), -1)
    format = strings.Replace(format, "d", t.Day(), -1)
    format = strings.Replace(format, "H", t.Hour(), -1)
    format = strings.Replace(format, "i", t.Minute(), -1)
    format = strings.Replace(format, "s", t.Sencod(), -1)
    return format
}

func toStr(v int) string {
    if v < 10 {
        return "0" + strconv.Itoa(v)
    }
    return strconv.Itoa(v)
}
